﻿using System;
using Microsoft.Xna.Framework.Graphics;   //   for Texture2D
using Microsoft.Xna.Framework;  //  for Vector2

namespace MenesDroid
{
    public class clsButton 
    {
        private readonly Texture2D _texturaNaoSelecionado; //  botão em não selecionado
        private readonly Texture2D _texturaSelecionado;    //  botão em estado selecionado
        private Vector2 _tamanho;
        public EventHandler EventoClick;        //  Evento a ser chamado automaticamente quando botão for selecionado

        public enum TipoStatus 
        {
            NaoSelecionado = 0,
            Selecionado = 1
        }
        public TipoStatus Status = TipoStatus.NaoSelecionado;

        public Texture2D Textura
        {
            get {
                return Status == TipoStatus.Selecionado ? _texturaSelecionado : _texturaNaoSelecionado;
            }
        }

        public Vector2 Posicao { get; private set; }

        public Rectangle Retangulo
        {
            get
            {
                return new Rectangle((int)Posicao.X, (int)Posicao.Y, (int)_tamanho.X, (int)_tamanho.Y);
            }
        }

        public clsButton( Texture2D texturaNaoSelecionado, Texture2D texturaSelecionado, 
            Vector2 posicao, Vector2 tamanho, EventHandler evento)
        {
            _texturaNaoSelecionado = texturaNaoSelecionado;
            _texturaSelecionado = texturaSelecionado;
            this.Posicao = posicao;
            this._tamanho = tamanho;
            EventoClick = evento;
        }

        public void Unload()
        {
            _texturaNaoSelecionado.Dispose();
            _texturaSelecionado.Dispose();
        }

        public void Draw(SpriteBatch renderizador2D)
        {
            Rectangle rect;

            switch (Status)
            {
                case TipoStatus.NaoSelecionado:
                    rect = new Rectangle((int)Posicao.X, (int)Posicao.Y, (int)_tamanho.X, (int)_tamanho.Y);
                    break;
                default:
                    rect = new Rectangle((int)Posicao.X - 5, (int)Posicao.Y - 5, (int)_tamanho.X + 10, (int)_tamanho.Y + 10);
                    break;
            }
            renderizador2D.Draw(Textura, rect, Color.White);
        }

        public void Executa()
        {
            //  chama o evento do botão
            EventoClick(null, null);
        }

    }
}



